//
//  LinkList.hpp
//  DS_Demo
//
//  Created by apple on 2023/9/28.
//

#ifndef LinkList_hpp
#define LinkList_hpp
#include "../../include/DS_Define.h"

Status InitList(LinkList *L);    // 构造一个空的线性表L
void DestroyList(LinkList *L);   // 销毁线性表L
void ClearList(LinkList *L);     // 将L重置为空表
Status ListEmpty(LinkList L);    // 线性表是否为空表
int ListLength(LinkList L);      // 返回线性表中数据元素的个数
void GetElem(LinkList L, int i, LElemType *e); // 用e返回线性表L中的第i个元素
int LocateElem(LinkList L, LElemType e);  // 定位e元素在线性表L中的位置
void PriorElem(LinkList L, LElemType cur_e, LElemType *pre_e); // 返回当前元素的前驱
void NextElem(LinkList L, LElemType cur_e, LElemType *next_e); // 返回当前元素的后继
void ListInsert(LinkList *L, int i, LElemType e); // 在线性表L的第i个位置之前插入元素e
void ListDelete(LinkList *L, int i, LElemType *e); // 删除线性表L中第i个位置的元素并用e返回
void ListTraverse(LinkList L); // 遍历线性表
void UnionList(LinkList *La, LinkList Lb); // 求两个线性表的并集
void MergeList(LinkList La, LinkList Lb, LinkList *Lc);
void IncSort(LinkList *L); // 线性表中的元素递增排序
void DecSort(LinkList *L); // 线性表中的元素递减排序

#endif /* LinkList_hpp */
